登录 白背景

227. 基本计算器 II

https://leetcode-cn.com/problems/basic-calculator-ii/

  • 提交时间:2022-02-22 13:15:27
  • 执行用时:100 ms, 在所有 Python3 提交中击败了32.38%的用户
  • 内存消耗:22.1 MB, 在所有 Python3 提交中击败了7.38%的用户
  • 通过测试用例:109 / 109
import re

class Solution:
    def calculate(self, s: str) -> int:
        # print("s", s)
        numList = ["+"]
        for item in re.findall("(\d+|\+|-|\\*|/)", s):
            # print(item)
            
            #======为符号
            if not item.isnumeric():
                numList.append(item)
                continue
            
            #======为整数
            if numList == []:
                numList.append(float(item))
                continue
            
            if numList[-1] == "+":
                numList.append(float(item))
                continue
            
            if numList[-1] == "-":
                numList.append(float(item))
                continue
        
            if numList[-1] == "/":
                numList.pop()
                numList.append(numList.pop() // float(item))
                continue

            if numList[-1] == "*":
                numList.pop()
                numList.append(numList.pop() * float(item))
                continue

        # print("ret", numList)
        ret = 0
        for x in range(0, len(numList), 2):
            if numList[x] == "+":
                ret += float(numList[x+1])
            if numList[x] == "-":
                ret -= float(numList[x+1])
        return int(ret)